package com.cbh.amadeus.client.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @author ChenBiHui
 * @date 2025/4/27
 */
@Data
@ConfigurationProperties("spring.amadeus-message.config.subscriber")
public class SubscriberConfig {

    /**
     * 发布者服务地址
     */
    private String host = "127.0.0.1";

    /**
     * 发布者服务端口
     */
    private Integer port = 9022;

    /**
     * 订阅者名称 (需要保证在各订阅者中全局唯一, 一旦定义请勿轻易变更, 关系到消息ACK及消息重试)
     */
    private String subscriberName;

    /**
     * 开启通道数 (负载均衡连接, 默认1, 大于1时, 所有的Channel平均分配主题, 互不影响)
     */
    private Integer channelCount = 1;

    /**
     * 消息自动重发时, 每次检索活跃消息的条数
     * 默认 100条/次
     */
    private Long messageResendLimit = 100L;

    /**
     * 消息自动重发时间间隔
     * 默认 60秒进行触发一次重发
     */
    private Long messageResendTimeSeconds = 60L;

    /**
     * 消息丢弃 最大可达次数
     * 默认 20次
     */
    private Integer messageAbandonTimes = 20;

    /**
     * 断开重连间隔
     * 默认 3秒触发一次重连
     */
    private Long reconnectTimeSeconds = 3L;

    /**
     * 空闲读检测间隔
     * 默认 30秒
     */
    private Integer readerIdleTimeSeconds = 30;

    /**
     * 空闲写检测间隔
     * 默认 20秒
     */
    private Integer writerIdleTimeSeconds = 20;

    /**
     * 是否开启空闲读检测
     * 默认 开启
     */
    private Boolean readerIdle = true;

    /**
     * 是否开启空闲写检测
     * 默认 开启
     */
    private Boolean writerIdle = true;
}
